import axios from 'axios'
import router from '../router'

// 创建axios实例
const request = axios.create({
  baseURL: '/api/admin',
  timeout: 15000
})

// 请求拦截器
request.interceptors.request.use(
  config => {
    const token = localStorage.getItem('admin_token')
    if (token) {
      config.headers['Authorization'] = `Bearer ${token}`
    }
    return config
  },
  error => {
    return Promise.reject(error)
  }
)

// 响应拦截器
request.interceptors.response.use(
  response => {
    console.log('接收到响应:', response.config.url, response.status, response.data)
    
    // 针对文件上传的特殊处理
    if (response.config.url.includes('/upload/') && response.data) {
      const responseData = response.data
      console.log('文件上传响应数据:', responseData)
      
      // 确保上传响应包含正确的url格式
      if (responseData.url && typeof responseData.url === 'string') {
        // URL已经存在，无需处理
        return responseData
      } else if (responseData.data && responseData.data.url) {
        // 有些API可能会将URL包装在data字段中
        responseData.url = responseData.data.url
        return responseData
      }
    }
    
    // 默认处理
    return response.data
  },
  error => {
    if (error.response) {
      const { status } = error.response
      console.error('请求错误:', status, error.response.data)
      
      if (status === 401) {
        // 未授权，跳转到登录页
        localStorage.removeItem('admin_token')
        router.push('/login')
      }
      
      return Promise.reject(error.response.data)
    }
    
    console.error('网络错误:', error)
    return Promise.reject(error)
  }
)

export default request